﻿using LPPA.Facturacion.BusinessLayer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace LPPA.Facturacion.UI.Views.Medidores
{
    public partial class Medidor : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
                LoadInitData();

            if (Request.QueryString["Edit"] != null)
            {
                txtCalle.Enabled = true;
                txtAltura.Enabled = true;
                ddlTipoMedidor.Enabled = true;
                ddlTitular.Enabled = true;
                btnGuardarCambios.Visible = true;
                btnEditar.Visible = false;
                btnFacturar.Visible = false;
                pnlActualizarConsumos.Visible = false;

            }

            if (ddlTipoMedidor.SelectedValue == "Reactivo")
                txtCorrienteInductiva.Enabled = false;

            btnEditar.Click += btnEditar_Click;
            btnFacturar.Click += btnFacturar_Click;
            btnGuardarCambios.Click += btnGuardarCambios_Click;
            gvMediciones.SelectedIndexChanged += gvMediciones_SelectedIndexChanged;
            btnActualizarConsumos.Click += btnActualizarConsumos_Click;

        }

        void btnActualizarConsumos_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtCorrienteInductiva.Text))
            {
                if (!string.IsNullOrEmpty(txtCorrienteReactiva.Text))
                {
                    MedicionesService.InsertMediciones
                        (
                          Convert.ToInt32(txtNroMedidor.Text),
                          1,
                          Convert.ToInt32(txtCorrienteReactiva.Text)
                        );
                }

            }
            else
            {
                if (!string.IsNullOrEmpty(txtCorrienteReactiva.Text))
                {
                    MedicionesService.InsertMediciones
                                   (
                                     Convert.ToInt32(txtNroMedidor.Text),
                                     1,
                                     Convert.ToInt32(txtCorrienteReactiva.Text)
                                   );
                }

                
                    MedicionesService.InsertMediciones
                        (
                          Convert.ToInt32(txtNroMedidor.Text),
                          2,
                          Convert.ToInt32(txtCorrienteInductiva.Text)
                        );
            }
            int medidorId = Convert.ToInt32(Request.QueryString["Id"]);
            Response.Redirect(ResolveUrl("/Views/Medidores/Medidor.aspx?Id=" + medidorId.ToString()));

        }

        void btnGuardarCambios_Click(object sender, EventArgs e)
        {
            int medidorId = Convert.ToInt32(Request.QueryString["Id"]);

            MedidorService.Update(new BizEntities.MedidorBIZ()
            {
                Altura = Convert.ToInt32(txtAltura.Text),
                Calle = txtCalle.Text,
                NumeroMedidor = Convert.ToInt32(txtNroMedidor.Text),
                TipoMedidor = ddlTipoMedidor.SelectedIndex,
                Titular = new BizEntities.TitularBIZ() { CodigoTitular = ddlTitular.SelectedIndex }
            });

            Response.Redirect(ResolveUrl("/Views/Medidores/Medidor.aspx?Id=" + medidorId.ToString()));
        }

        void btnFacturar_Click(object sender, EventArgs e)
        {
            //Page en donde va a ver facturacion actual y anteriores
            int medidorId = Convert.ToInt32(Request.QueryString["Id"]);
            var fc = FacturaService.FacturarMedidor(medidorId);
            Response.Redirect(ResolveUrl("/Views/Facturacion/Factura.aspx?Id=" + fc.NumeroFactura.ToString()));
        }

        void btnEditar_Click(object sender, EventArgs e)
        {
            Response.Redirect(ResolveUrl("/Views/Medidores/Medidor.aspx?Id=" + txtNroMedidor.Text + "&Edit=True"));
        }

        private void LoadInitData()
        
        {
            ddlTipoMedidor.Items.Insert(0, "-- Seleccione un Tipo de Medidor --");
            ddlTipoMedidor.Items.Insert(1, "Reactivo");
            ddlTipoMedidor.Items.Insert(2, "Reactivo-Inductivo");

            ddlTitular.DataSource = new TitularService().GetAll();
            ddlTitular.DataValueField = "CodigoTitular";
            ddlTitular.DataTextField = "Nombre";
            ddlTitular.DataBind();
            ddlTitular.Items.Insert(0, "-- Seleccione un Titular --");

            int medidorId = Convert.ToInt32(Request.QueryString["Id"]);

            var medidor = MedidorService.GetMedidorByNumeroMedidor(medidorId);

            txtNroMedidor.Text = medidor.NumeroMedidor.ToString();
            txtAltura.Text = medidor.Altura.ToString();
            txtCalle.Text = medidor.Calle;
            ddlTipoMedidor.SelectedIndex = medidor.TipoMedidor;
            ddlTitular.SelectedIndex = medidor.Titular.CodigoTitular;



            gvMediciones.DataSource = MedicionesService.GetMedicionesByMedidor(medidorId);
            gvMediciones.DataBind();


        }

        void gvMediciones_SelectedIndexChanged(object sender, EventArgs e)
        {
            throw new NotImplementedException();
        }
    }
}